#pragma once
#include <string>
#include <vector>
#include <memory>
#include <functional>
#include <random>
#include<iostream>


class Character;
class Monster;
class Effect;
// 前向声明目标类型
enum class TargetType { Player, Monster };


// 方法管理器类
class Methods {
private:
    std::vector<std::shared_ptr<Effect>> effects;

public:
    // 添加效果
    void addEffect(std::shared_ptr<Effect> effect) {
        effects.push_back(effect);
    }

    void applyRandomEffect(Character& target) const;

    // 对怪物应用指定ID的效果（修改：在cpp文件中实现）
    void applyEffectById(int effectId, Monster& target) const;

    void applyEffectById(int effectId, Character& target) const;

    // 获取效果数量
    size_t getEffectCount() const {
        return effects.size();
    }
};